Przygotowanie aplikacji .exe (Deploy)

Przygotowanie aplikacji .exe (Deploy)

Czym jest Deploy

Dotychczas wszystkie nasze programy uruchamialiśmy w środowisku przygotowanym przez używane przez nas środowisko programistyczne (np. Qt Creator lub Visual Studio). Zazwyczaj, kiedy program/aplikacja jest gotowa konieczne jest przygotowanie programu, tak aby możliwe było jego uruchomienie przez użytkownika końcowego. Dla systemu Windows zazwyczaj konieczne jest przygotowanie pliku .exe wraz z towarzyszącymi mu plikami .dll oraz plikami wczytywanymi przez nasz program, na przykład tekstury lub bliki bazy danych.

Przykład przygotowania deploy programu dla systemu Windows

Poniższy przykład zakłada zakłada wykorzystanie środowiska Qt Creator, procedura nie będzie się znacząco różnić w przypadku innych środowisk, zmieni się jedynie ścieżka adresów źródłowych folderów. Na potrzeby przykładu zakładamy, że nazwa projektu, którego deploy chcemy wykonać to sfml_animation.

1. Kompilacja wersji Release

Dotychczas, w trakcie pracy nad wszystkimi programami, kompilację wykonywaliśmy w trybie Debug. Tryb Debug, jak sama nazwa wskazuje, pozwala na debugowanie naszych aplikacji, co powoduje że docelowy plik binarny/wykonywalny zawiera dodatkowe informacje, które nie są potrzebne użytkownikowi końcowemu. Właściwą dla deploy wersją kompilacji programu zawsze powinno być Release.

W celu zmiany na Release w Qt Creator klikamy ikonę konfiguracji trybu budowania (1), a następnie wybieramy Release (2):

01_change_to_release

Następnie budujemy projekt (Ctrl + B) i czekamy na zakończenie procesu kompilacji. Na czas dalszego rozwijania warto zawsze wrócić do trybu Debug.

2. Przygotowanie folderu docelowego

W dowolnym miejscu na dysku tworzymy folder docelowy, do którego będziemy kopiować wszystkie pliki konieczne do uruchomienia naszego programu. Nazwa folderu jest dowolna nie ma ona znaczenia.

3. Kopiowanie pliku .exe

Qt Creator automatycznie buduje projektu w specjalnie, automatycznie, tworzonych do tego celu folderach, tzw. build folders. Jest to ten sam folder, w którym umieszczaliśmy pliki z teksturami, z tą różnicą, że na końcu jego nazwy znajdziemy Release (UWAGA: Jeżeli wcześniej wykonywaliśmy kompilacje w trybie Debug znajdziemy dwa foldery o bardzo zbliżonej nazwie, interesuje nas ten z Release na końcu).

Otwieramy folder budowania w trybie Release:

02_build_folder

Po otwarciu folderu otwieramy folder release i kopiujemy plik .exe do naszego folderu docelowego.

4. Kopiowanie plików .dll kompilatora

Nasz plik wykonywalny .exe nie zawiera wszystkich informacji potrzebnych do jego uruchomienia, znacząca część funkcjonalności zawarta jest w plikach .dll dostarczanych wraz z kompilatorem. Te prekompilowane biblioteki są konieczne do niezależnego uruchomienia naszej aplikacji.

Jeżeli korzystasz z kompilatora MinGW

MinGW jest kompilatorem domyślnie wykorzystywanym w trakcie zajęć. Jeżeli nie zmieniłeś/łaś domyślnego folderu instalacji Qt Creator poszukiwane pliki znajdziesz w folderze (UWAGA: w przypadku korzystania z innej wersji kompilatora wybierz folder oznaczony odpowiednią dla ciebie wersją):

C:\Qt\Tools\mingw730_64\bin

Z powyższego folderu, do folderu docelowego skopiuj następujące pliki:

Jeżeli korzystasz z kompilatora MSVC

5. Kopiowanie plików .dll bibliotek

Jeżeli korzystasz z zewnętrznych bibliotek (na przykład SFML), w folderze docelowym należy umieścić pliki .dll odpowiednie dla danej biblioteki. Zestaw plików .dll różnić się będzie znacząco pomiędzy bibliotekami. Jeżeli nie wiesz dokładnie, które pliki .dll są konieczne, możesz na tym etapie spróbować uruchomić aplikację w folderze docelowym, okienko błędu powinno poinformować, jakich plików brakuje. Uzupełniaj brakujące pliki, aż błędy przestaną się pojawiać:

03_dll_error

Dla biblioteki SFML w folderze docelowym należy umieścić następujące pliki:

Zwróć uwagę, że nazwy plików nie zawierają w nazwie -d-, które opisuje pliki .dll właściwe dla tryby Debug.

6. Kopiowanie plików dodatkowych - tzw. assets

Jeżeli twój program korzysta z zewnętrznych plików (na przykład tekstur, pików dźwiękowych, baz danych, plików tekstowych), to należy je skopiować do folderu docelowego, podobnie jak robiłeś/aś to umieszczając je w build folderze w trakcie tworzenia programu i uruchamiania go w środowisku programistycznym. Pamiętaj aby zachować strukturę/hierarchię folderów.

Jeżeli w aplikacji zostały wykorzystane bezwzględne ścieżki do plików zewnętrznych, popraw je na ścieżki względne i ponownie przygotuj deploy.

7. Uruchom program

Tak przygotowany deploy, po podwójnym kliknięciu .exe powinien poprawnie uruchomić nasz program na każdym, dowolnym, komputerze działającym pod kontrolą systemu Windows w wersji 64 bit.


Autorzy: Tomasz Mańkowski